<script>
    // 1.Object.keys(): 把对象的键名返回出来组成一个数组
    let obj = {
        name: 'Tom',
        age: 20,
        height: '180cm',
    }
    let arr1 = Object.keys(obj);
    console.log(arr1); // ['name', 'age', 'height']

    // 2.Object.values(): 把对象的键值返回出来组成一个数组
    let arr2 = Object.values(obj);
    console.log(arr2); // ['Tom', 20, '180cm']

    // 3.Object.assign( target,source1,source2,... )
    // 描述：对象的合并(浅拷贝)，将源对象（source），复制到目标对象 ( target )
    let obj1 = {
        name: '小明',
        list: [10, 20]
    }
    let obj2 = {
        age: 20,
        sex: '男'
    }
    let obj3 = {
        ab: '哈哈哈哈'
    };
    Object.assign( obj3, obj1, obj2);
    console.log(obj3); // {ab: '哈哈哈哈', name: '小明', age: 20, sex: '男'}

    obj3.name = '小红';
    obj3.list.push('真好')
    console.log(obj1); // name属性还是原来的值, 嵌套的引用数据类型list会改变   {name: '小明', list: [10, 20, 真好]}

    // 4.JSON.stringify( object )： 把js对象转换成json字符串
    // json是一种数据格式   本质上是字符串
    // 对象的键名必须使用双引号，键值是字符串时也必须使用双引号
    let p1 = {
        name: 'tom',
        age: 10
    }
    console.log( JSON.stringify(p1) ); // {"name":"tom","age":10}  就是一个字符串

    // 5.JSON.parse(): 把json字符串转换成js对象
    // let str = '{ "userName": "tom", age: 20}'; // 不符合json规则
    let str = '{ "userName": "tom", "age": 20}'; // 不符合json规则
    console.log( JSON.parse( str ) );  // {userName: 'tom', age: 20}
</script>